package com.wmx.likou;

import java.util.HashMap;
import java.util.Hashtable;

public class TwoSum {

    /*
       方法一：可以用暴力法进行破解，用双层循环遍历nums。一层遍历第一个加数，add2=target-nums[i], 从i之后进行遍历，如果存在add2，就返回这两个加数的索引值。
      */
    public int[] twoSum(int[] nums, int target) {
        int [] a = new int[2];
        for(int i = 0 ; i<nums.length;i++){
            for(int j = i+1 ; j<nums.length;j++){
                if(nums[i]+nums[j] == target){
                    a[0]=i;
                    a[1]=j;
                }
            }
        }
        return a;
    }

    /*
    * 方法二：可以借助HashMap，将nums加入到HashMap表中，其中nums中的数作为key，索引作为value,
    * 判断Hashmap中存在target-x且这个数的索引值不等于x自身即可。
    * */

    public int[] twoSumOne (int [] nums ,int target){
        HashMap<Integer,Integer> hashMap = new HashMap<>();
        for (int i = 0 ;i<nums.length;i++){
            hashMap.put(nums[i],i);
        }

        for(int j = 0 ; j< nums.length ; j++){
            int result = target-nums[j];
            if(hashMap.containsKey(result)&&hashMap.get(result)!=j){
                return new int[] {j,hashMap.get(result)};
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }


}
